/*
* Copyright (C) 2020 ~ 2023 chaigec All Rights Reserved.
*
* Author:     chaigec <chaigec@163.com>
* Maintainer: chaigec <chaigec@163.com>

 * Use of this source code is governed by MIT license that can be found in the
 * LICENSE file in the root of the source tree. All contributing project authors
 * may be found in the AUTHORS file in the root of the source tree.
*/

#ifndef MK_PTZ_COMMAND_H
#define MK_PTZ_COMMAND_H
#include <MkTypes.h>

class CMkPtzCommand
{
public:
    typedef enum _ptz_command
    {
        //移动.
        PtzStop = 0,
        PtzUp,
        PtzDown,
        PtzLeft,
        PtzRight,

        PtzLeftUp,
        PtzRightUp,
        PtzLeftDown,
        PtzRightDown,
        PtzHorseCtorAutoScan, //水平扫描
        PtzVerseCtorAutoScan, //垂直扫描

        PtzZoomIn,			//焦距
        PtzZoomOut,
        PtzFocusNear,		//聚焦
        PtzFocusFar,
        PtzApertureOpen,	//光圈
        PtzApertureClose,

        //功能设备
        PtzLightTurnOn,    //开灯光
        PtzLightTurnOff,   //关灯
        PtzWiperTurnOn,    //开雨刷
        PtzWiperTurnOff,   //关雨刷
        PtzFanTurnOn,       //开风扇
        PtzFanTurnOff,      //关风扇
        PtzHeaterTurnOn,    //开加热器
        PtzHeaterTurnOff,   //关加热器
        PtzAuxTurnOn,       //打开辅组开关
        PtzAuxTurnOff,     //关闭辅组开关

        //预置位
        PtzGotoPreset,
        PtzSetPreset,
        PtzDelPreset,

        //cruise 巡航 
        PtzCruiseFillPre,	//将预置点加入巡航序列
        PtzCruiseSetDwell,	//设置巡航点停顿时间
        PtzCruiseSetSpeed,	//设置巡航速度
        PtzCruiseClearPre,	//将预置位从巡航删除
        PtzCruiseRun,	//云台开启巡航
        PtzCruiseClear, //删除巡航
        Ptz3DZoom 	//3D云台控制
    }PtzCommand;

public:
    ~CMkPtzCommand();
    static CMkPtzCommand& GetIntance() { return m_Instance; }
    Uint32 GetPtzCommand(const MkString& PtzCmd, PtzCommand& Cmd) const;
    const MkUnorderedMap<MkString, PtzCommand>& GetMapPtzCommand() { return m_MapPtzCommand; }
private:
    CMkPtzCommand();

private:
    static CMkPtzCommand                      m_Instance;
    MkUnorderedMap<MkString, PtzCommand>      m_MapPtzCommand;
};


#endif